import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
import java.util.ArrayList;
/**
 * Write a description of class Batman here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Batman extends Usuario
{
     private int direccionx;
     private String dibujo[];
     private int dibujo_act;
     private int activa;
     private Actor tocaRed;
     private Actor tocaCuerda;
     private int aux;
     private int arriba;
    
      public  Batman()
    {
      dibujo=new String[10];
      dibujo[0]="batman1c.gif";//imagen Nick parada
      dibujo[1]="batman2c.gif";//imagen Nick parada 
      dibujo[2]="batman3c.gif";//imagen Nick parada
      dibujo[3]="batman4c.gif";
      dibujo[4]="batman5c.gif";
      dibujo[5]="batman6c.gif";
      dibujo[6]="batman7c.gif";
      dibujo[7]="batmanb1.gif";
      dibujo[8]="batmanb2.gif";
      dibujo[9]="batmanb3.gif";
      this.dibujo_act=0;
      this.activa=0;
      this.aux=0;
       
    }
      
    public void act() 
    {
      mueve_usuario();  
    }
  
    
        public boolean Gravedad()
    {    
                                   
         List piso =  super.getWorld().getObjectsAt(this.getX(),  this.getY()+50, Plataforma.class);
               if(!piso.isEmpty())
        {
           return (true);
        }
          else
          {
        if (this.getY()<550)
            this.setLocation(this.getX(), this.getY()+5);
            return(false);
          }
    }
    
    public void mueve_usuario()
    {
        World mundo=getWorld();
        if(Greenfoot.isKeyDown("c"))//dispara la bola de spider man para golpear
             { 
                 super.Cambia_Activo();
             }
        
     tocaRed=this.getOneObjectAtOffset(0,30,Red.class);
       if(tocaRed==null)//
       {
       this.Gravedad();
       }
       
       tocaCuerda=this.getOneObjectAtOffset(0,-40,Cuerda.class);
       if(tocaCuerda!=null)//
       {
          arriba=1;
       }
       else
       {
           arriba=0;
       }
       
       if(super.variable()==0){
           GreenfootImage imagen;
       
       this.setImage(this.dibujo[this.dibujo_act]);
       if(direccionx== 1)
        {
            imagen=this.getImage();
            imagen.mirrorHorizontally();
            this.setImage(imagen); 
        }
       imagen=this.getImage();
       
       if (Greenfoot.isKeyDown("right")&& this.aux==0)
       {
           move(4);
           direccionx=0;
           this.dibujo_act++;
       }
       else if(Greenfoot.isKeyDown("up") && this.aux ==0 && arriba==1)
       {
           this.aux=1;
           this.dibujo_act=7;
       }
       else if(Greenfoot.isKeyDown("left")&& this.aux==0)
       {
           move(-4);
           direccionx=1;
           this.dibujo_act++;
                      
       }
        else if(Greenfoot.isKeyDown("space"))
             { 
                           
                 Cuerda cuerda=new Cuerda(this.getX()+80,this.getY());
                 getWorld().addObject(cuerda,this.getX(),this.getY()-50);
                           
             }
         else if(Greenfoot.isKeyDown("d"))
             { 
                 
                 if(this.direccionx==0)
                 {
                 Disparo ds=new Disparo(this.getX()+80,this.getY(),this.direccionx,2);
                 getWorld().addObject(ds,this.getX()+50,this.getY()-30);
                 }
                 if(this.direccionx==1)
                 {
                 Disparo ds=new Disparo(this.getX()-80,this.getY(),this.direccionx,2);
                 getWorld().addObject(ds,this.getX()-50,this.getY()-30);
                 }
             }      
      else if (this.aux==1 &&  this.dibujo_act>6 && this.dibujo_act<=9)//animacion brinco arriba
               {
                   
                   this.setLocation(this.getX(),this.getY()-15);
                   this.dibujo_act++;
                }
             
        if(this.dibujo_act==6 || this.dibujo_act==9)
        {
            this.dibujo_act=0;
            this.aux=0;
        }
    }
     if(this.getY()>550)//si se cae pierde
        {
            ((Mundo)mundo).regresa_todo();
        }
    }
}
